In the field of computer systems, it is desirable to allocate system resources among various groups of processes running on the system. A computer system may have limited resources, and users of that system may want to ensure that those resources are allocated in a particular manner so they may be used most efficiently. The user may allocate system resources among groups directly, or indirectly through the system whereby the allocations are determined by other system processes. The user may also allocate maximum limits of allocations for some or all of the groups to improve efficiency.
System resources include any limited resource in the computer system, including but not limited to memory resources, central processing unit (CPU) resources, input/output (I/O) bandwidth (such as disk I/O bandwidth or network I/O bandwidth), etc. Groups of processes using those resources may be software applications running on the system, portions of applications, or any other processes that use system resources.
A problem occurs when one of the groups is inactive or not enabled. By way of example, a group may become inactive if it is taken off-line, if it only operates during certain hours of the day, or if it is otherwise turned off and is not using a system resource. In the case of a software application as a group, the application may run only at certain times of the day or only in response to certain other system activities. What is needed is a method and system for efficiently allocating system resources according to the needs of the applications.